home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / smb_netusergetgroups.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  183 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10894);
  10.  script_version("$Revision: 1.9 $");
  11.  name["english"] = "Obtains the lists of users groups";
  12.  
  13.  script_name(english:name["english"]);
  14.  
  15.  desc["english"] = "
  16. This script requests the list of groups each user belongs
  17. to and stores it in the KB
  18. Risk factor : None";
  19.  
  20.  
  21.  
  22.  script_description(english:desc["english"]);
  23.  
  24.  summary["english"] = "Implements NetUserGetGroups()";
  25.  
  26.  
  27.  script_summary(english:summary["english"]);
  28.  
  29.  script_category(ACT_GATHER_INFO);
  30.  
  31.  
  32.  script_copyright(english:"This script is Copyright (C) 2002 Renaud Deraison");
  33.  family["english"] = "Windows : User management";
  34.  script_family(english:family["english"]);
  35.  script_dependencies("netbios_name_get.nasl",
  36.               "smb_login.nasl", 
  37.              "smb_sid2user.nasl",
  38.              "snmp_lanman_users.nasl");
  39.  script_require_keys("SMB/transport", "SMB/name", "SMB/login", "SMB/password", "SMB/Users/enumerated");
  40.  script_require_ports(139, 445);
  41.  exit(0);
  42. }
  43.  
  44.  
  45. include("smb_nt.inc");
  46. port = kb_smb_transport();
  47. if(!port)port = 139;
  48.  
  49. if(!get_port_state(port))exit(0);
  50.  
  51. soc = open_sock_tcp(port);
  52. if(!soc)exit(0);
  53.  
  54. login = kb_smb_login();
  55. pass  = kb_smb_password();
  56. dom =   kb_smb_domain();
  57.  
  58. if(!login)login = "";
  59. if(!pass) pass  = "";
  60. if(!dom)dom = "";
  61.  
  62. name = kb_smb_name();
  63. if(!name)exit(0);
  64.  
  65. r = smb_session_request(soc:soc, remote:name);
  66. if(!r){
  67.     #display("smb_session_request failed\n");
  68.     exit(0);
  69.     }
  70.     
  71. prot = smb_neg_prot(soc:soc);
  72. if(!prot)exit(0);    
  73. r = smb_session_setup(soc:soc, login:login, password:pass, domain:dom, prot:prot);
  74. if(!r){
  75.     #display("Session setup failed\n");
  76.     exit(0);
  77.     }
  78.  
  79. uid = session_extract_uid(reply:r);
  80.  
  81. #
  82. # Connect to the remote IPC and extract the TID
  83. # we are attributed
  84. #      
  85. r = smb_tconx(soc:soc, name:name, uid:uid, share:"IPC$");
  86. # extract our tree id
  87. tid = tconx_extract_tid(reply:r);
  88.  
  89.  
  90. #display("TID = ", tid, "\n");
  91.  
  92. pipe = OpenPipeToSamr(    soc:soc, 
  93.                   uid:uid, 
  94.                   tid:tid);
  95.               
  96. #display("PIPE = ", pipe, "\n");
  97.  
  98. samrhdl = SamrConnect2(    soc:soc, 
  99.                    uid:uid,
  100.                    tid:tid, 
  101.                    pipe:pipe, 
  102.                    name:name
  103.               );
  104.               
  105. if(!samrhdl)exit(0);         
  106.  
  107.  
  108. dom = _SamrEnumDomains(    soc:soc, 
  109.                   uid:uid, 
  110.                   tid:tid, 
  111.                   pipe:pipe, 
  112.                   samrhdl:samrhdl
  113.               );
  114.  
  115. if(!dom)exit(0);
  116.  
  117.  
  118. sid = SamrDom2Sid(    soc:soc, 
  119.                       uid:uid, 
  120.               tid:tid, 
  121.               pipe:pipe, 
  122.               samrhdl:samrhdl, 
  123.               dom:dom
  124.          );
  125.  
  126. if(!sid)exit(0);
  127.  
  128.  
  129. domhdl =
  130.     SamrOpenDomain(    soc:soc, 
  131.             uid:uid, 
  132.             tid:tid, 
  133.             pipe:pipe, 
  134.             samrhdl:samrhdl,
  135.             sid:sid
  136.                );          
  137.  
  138.  
  139. if(!domhdl)exit(0);
  140.         
  141. count = 1;
  142. login = string(get_kb_item(string("SMB/Users/", count)));
  143. while(login)
  144. {
  145. rid = SamrLookupNames(  soc:soc, 
  146.             uid:uid, 
  147.             tid:tid, 
  148.             pipe:pipe, 
  149.             domhdl:domhdl,
  150.             name:login
  151.              );    
  152. if(rid)
  153. {
  154.   usrhdl = SamrOpenUser(soc:soc, 
  155.             uid:uid, 
  156.             tid:tid, 
  157.             pipe:pipe, 
  158.             samrhdl:domhdl,
  159.              rid:rid
  160.              );
  161.  if(usrhdl)
  162.  {                    
  163. rids = 
  164.   SamrQueryUserGroups(    soc:soc, 
  165.                    uid:uid,
  166.               tid:tid,
  167.               pipe:pipe,
  168.               usrhdl:usrhdl
  169.              );
  170.              
  171.    
  172.   if(rids)
  173.    {
  174.     name = string("SMB/Users/", count, "/Groups");
  175.     set_kb_item(name:name, value:rids);
  176.    }
  177.   } 
  178.  }         
  179.  count = count + 1;
  180.  login = string(get_kb_item(string("SMB/Users/", count)));
  181. }         
  182.           
  183.